The present invention is directed to the interface between a computer and a an user of that computer, and more particularly to an interface which provides the user with the ability to automatically accomplish tasks with the computer.
Typically, most personal computers are employed as passive tools. Users of the computers are required to directly manipulate interface elements in order to accomplish desired tasks. Often, the discovery of new features and services available through a computer only takes place through trial and error. As a result, the computers are not being utilized in the most efficient manner, because the users do not understand how to take advantage of the power that is available to them. In other words, the vast potential of the computer often goes unrealized, because users are unfamiliar with all of the capabilities at their disposal or unable to employ them effectively.
In order to increase the efficiency with which computers are used, it is desirable to revise the fundamental manner in which users interact with their computers. More particularly, rather than using the computer as a passive tool that is directly manipulated by the user, it is preferable to employ the computer as a cooperative partner that assists in accomplishing the tasks desired by the user. To this end, it is desirable to provide a mechanism by which computers can be set up to accomplish tasks automatically, without requiring the user to instruct or otherwise manipulate the computer each time the task is to be performed.
Some computer programs provide certain capabilities in this regard. For example, some electronic mail programs contain a scheduling feature by which a server computer is automatically accessed at predetermined times of the day to determine whether the user has any incoming mail. If so, that mail is downloaded to the user""s computer, and the connection with the server computer is then terminated. Other application programs also offer an automatic scheduling feature.
As another example, most operating systems provide the capability to have certain actions carried out upon startup. For example, the user can designate that certain programs be launched and running when the computer is first started. In a similar manner, some applications programs can be configured to automatically open a particular file when they are launched.
While these various features provide the user with the ability to automate certain tasks, they are each limited in their applicability. More particularly, the scheduling feature of the electronic mail program is hard coded into the software for that program, and therefore only available within the context of that particular program. Furthermore, the program must be running in order for the scheduled tasks to be carried out. This requirement may be undesirable since the program will use some of the computer""s memory while it is running, thereby reducing the amount available for other programs. It also places a practical limit on the number of different tasks that can be set up, since each different program that has a scheduled task must be running in memory in order for its task to be implemented.
Similarly, the ability to launch applications upon startup is limited to that one particular instance. It does not provide the user with the capability to have tasks automatically carried out at other times or in response to other events.
It is desirable, therefore, to provide a mechanism for configuring a computer to automatically carry out any task that may be desired by a user in response to a variety of different events or at any desirable time, without requiring the user to have any familiarity with the programming of computers. To have applicability to any of the variety of tasks that might be desired by a user, such a mechanism should preferably function at the level of the computer""s operating system, rather than be tied to specific applications programs or the like.
In pursuit of this objective, the present invention provides a computer-user interface that facilitates interaction between the user and the computer in a manner which enables the computer to assist the user in accomplishing desired goals. Through the medium of this interface, the user describes the goals and the tasks to be accomplished. Based upon a particular action to be performed, the computer interviews the user to obtain the information pertinent to that particular task. Once the information is provided to the computer, it works with the user to create a task that automatically performs the desired actions in response to triggering events designated by the user. In addition, the task notifies the user whenever the action is being carried out.
The computer-human interface has an open architecture which provides the user a great deal of flexibility in the creation of automated tasks. Generally speaking, any executable function can be designated by the user as the subject of a task. The initiation of this task can be carried out in response to any programmatically detectable event, or trigger, which is also designated by the user. As a further feature, the user has the ability to select from among a number of different types of notification to be provided whenever the task is being performed. With the flexibility offered by this arrangement, the user can customize the operation of a computer to suit his or her particular needs.
Each of the elements of a task, e.g. the action to be performed, the trigger and the notification, is stored as a separate object at the operating system level. These various objects can be selected by the user and associated with a file to add behavior to the file. Since these elements are operated upon at the system level, they can be activated at any time in response to the triggering event, even though the associated file is itself dormant. Furthermore, the file itself need not have any awareness of the scheduling of the task. Thus, no customization of the file itself, e.g. added code, is required to enable that file to be associated with a task.